<!DOCTYPE html>
<!-- saved from url=(0127)https://docs.google.com/document/d/e/2PACX-1vSakfqF726GBh3eXChMsE0LqaAivvnZs-3HEmhHEhYOZer4ZbRogxDF5sqd6FWI8Vfettp0sf_vaHuL/pub -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>WebPerfWG design meeting - April 12th 2019</title><link rel="shortcut icon" href="https://ssl.gstatic.com/docs/documents/images/kix-favicon7.ico"><meta name="referrer" content="strict-origin-when-cross-origin"><style type="text/css" nonce="">
      @import url("https://fonts.googleapis.com/css?family=Google+Sans");
      @import url("https://fonts.googleapis.com/css?family=Roboto");

      body {
        font-family: Roboto, arial, sans, sans-serif;
        margin: 0;
      }

      iframe {
        border: 0;
        frameborder: 0;
        height: 100%;
        width: 100%;
      }

      #header {
        align-items: center;
        background: white;
        border-bottom: 1px #ccc solid;
        display: flex;
        height: 60px;
        justify-content: space-between;
        position: fixed;
        top: 0;
        width: 100%;
        z-index: 100;
      }

      #header #title {
        font-family: 'Google Sans';
        font-size: large;
        margin: auto 0 auto 20px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        width: 70%;
      }

      #header #interval {
        margin: auto 25px auto 0;
        font-family: Roboto;
        font-size: small;;
      }

      #footer {
        background: #f0f0f0;
        border-bottom: 1px #ccc solid;
        bottom: 0;
        font-family: Roboto;
        font-size: small;
        padding: 10px 10px;
        position: fixed;
        text-align: center;
        width: 100%;
      }

      #contents {
        padding: 100px 20% 50px 20%;
      }

      @media only screen and (max-device-width: 800px) {
        #header {
          border-bottom-width: 5px;
          height: auto;
          display: block;
        }

        #header #title {
          font-size: 3em;
          margin: auto 0 auto 20px;
          width: 90%;
        }

        #header #interval {
          font-size: 1.5em;
          margin: 10px 0 auto 25px;
        }

        #contents {
          padding: 150px 5% 80px;
        }

        #footer {
          font-size: 2em;
        }
      }

      .dash {
        padding: 0 6px;
      }
    </style></head><body><div id="header"><div id="title">WebPerfWG design meeting - April 12th 2019</div><div id="interval"><span></span></div></div><div id="contents"><style type="text/css">.lst-kix_mad1fuvvl7ij-8>li:before{content:"\0025a0  "}ul.lst-kix_mad1fuvvl7ij-4{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-3{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-2{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-1{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-0{list-style-type:none}.lst-kix_mad1fuvvl7ij-3>li:before{content:"\0025cf  "}.lst-kix_mad1fuvvl7ij-4>li:before{content:"\0025cb  "}ul.lst-kix_a5a4vxskljm3-1{list-style-type:none}ul.lst-kix_a5a4vxskljm3-0{list-style-type:none}ul.lst-kix_a5a4vxskljm3-3{list-style-type:none}.lst-kix_mad1fuvvl7ij-5>li:before{content:"\0025a0  "}ul.lst-kix_a5a4vxskljm3-2{list-style-type:none}ul.lst-kix_a5a4vxskljm3-5{list-style-type:none}ul.lst-kix_a5a4vxskljm3-4{list-style-type:none}ul.lst-kix_a5a4vxskljm3-7{list-style-type:none}.lst-kix_mad1fuvvl7ij-6>li:before{content:"\0025cf  "}ul.lst-kix_a5a4vxskljm3-6{list-style-type:none}ul.lst-kix_a5a4vxskljm3-8{list-style-type:none}.lst-kix_mad1fuvvl7ij-7>li:before{content:"\0025cb  "}.lst-kix_6kll866cia1o-0>li:before{content:"\0025cf  "}.lst-kix_a5a4vxskljm3-0>li:before{content:"\0025cf  "}.lst-kix_a5a4vxskljm3-1>li:before{content:"\0025cb  "}.lst-kix_6kll866cia1o-2>li:before{content:"\0025a0  "}.lst-kix_a5a4vxskljm3-3>li:before{content:"\0025cf  "}.lst-kix_6kll866cia1o-1>li:before{content:"\0025cb  "}.lst-kix_a5a4vxskljm3-2>li:before{content:"\0025a0  "}.lst-kix_6kll866cia1o-7>li:before{content:"\0025cb  "}.lst-kix_6kll866cia1o-8>li:before{content:"\0025a0  "}.lst-kix_6kll866cia1o-6>li:before{content:"\0025cf  "}.lst-kix_6kll866cia1o-3>li:before{content:"\0025cf  "}.lst-kix_6kll866cia1o-4>li:before{content:"\0025cb  "}.lst-kix_6kll866cia1o-5>li:before{content:"\0025a0  "}.lst-kix_3uemr9tmymi3-8>li:before{content:"\0025a0  "}.lst-kix_3uemr9tmymi3-7>li:before{content:"\0025cb  "}.lst-kix_3uemr9tmymi3-6>li:before{content:"\0025cf  "}.lst-kix_3uemr9tmymi3-5>li:before{content:"\0025a0  "}.lst-kix_3uemr9tmymi3-4>li:before{content:"\0025cb  "}.lst-kix_3uemr9tmymi3-1>li:before{content:"\0025cb  "}.lst-kix_a5a4vxskljm3-8>li:before{content:"\0025a0  "}ul.lst-kix_3uemr9tmymi3-0{list-style-type:none}.lst-kix_3uemr9tmymi3-3>li:before{content:"\0025cf  "}.lst-kix_a5a4vxskljm3-7>li:before{content:"\0025cb  "}.lst-kix_3uemr9tmymi3-2>li:before{content:"\0025a0  "}ul.lst-kix_3uemr9tmymi3-4{list-style-type:none}.lst-kix_a5a4vxskljm3-4>li:before{content:"\0025cb  "}.lst-kix_a5a4vxskljm3-5>li:before{content:"\0025a0  "}ul.lst-kix_3uemr9tmymi3-3{list-style-type:none}ul.lst-kix_3uemr9tmymi3-2{list-style-type:none}ul.lst-kix_3uemr9tmymi3-1{list-style-type:none}ul.lst-kix_3uemr9tmymi3-8{list-style-type:none}.lst-kix_a5a4vxskljm3-6>li:before{content:"\0025cf  "}ul.lst-kix_3uemr9tmymi3-7{list-style-type:none}.lst-kix_3uemr9tmymi3-0>li:before{content:"\0025cf  "}ul.lst-kix_3uemr9tmymi3-6{list-style-type:none}ul.lst-kix_3uemr9tmymi3-5{list-style-type:none}ul.lst-kix_6kll866cia1o-8{list-style-type:none}ul.lst-kix_6kll866cia1o-7{list-style-type:none}ul.lst-kix_6kll866cia1o-4{list-style-type:none}ul.lst-kix_6kll866cia1o-3{list-style-type:none}ul.lst-kix_6kll866cia1o-6{list-style-type:none}ul.lst-kix_6kll866cia1o-5{list-style-type:none}ul.lst-kix_6kll866cia1o-0{list-style-type:none}ul.lst-kix_6kll866cia1o-2{list-style-type:none}ul.lst-kix_6kll866cia1o-1{list-style-type:none}li.li-bullet-0:before{margin-left:-18pt;white-space:nowrap;display:inline-block;min-width:18pt}.lst-kix_mad1fuvvl7ij-2>li:before{content:"\0025a0  "}ul.lst-kix_mad1fuvvl7ij-8{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-7{list-style-type:none}ul.lst-kix_mad1fuvvl7ij-6{list-style-type:none}.lst-kix_mad1fuvvl7ij-1>li:before{content:"\0025cb  "}ul.lst-kix_mad1fuvvl7ij-5{list-style-type:none}.lst-kix_mad1fuvvl7ij-0>li:before{content:"\0025cf  "}ol{margin:0;padding:0}table td,table th{padding:0}.c2{margin-left:72pt;padding-top:0pt;padding-left:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c0{margin-left:36pt;padding-top:0pt;padding-left:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c1{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal}.c3{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left;height:11pt}.c6{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c7{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}.c5{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}.c4{padding:0;margin:0}.c8{color:inherit;text-decoration:inherit}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:"Arial"}p{margin:0;color:#000000;font-size:11pt;font-family:"Arial"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style><div class="c5"><p class="c6"><span class="c1">Participants:</span></p><p class="c6"><span class="c1">Steven Bougon, Gilles Dubuc, Phillippe Le Hegaret, Nicolás Pe&ntilde;a, Maxime Villancourt, Tim Dresser, Benjamin De Kosnik, Ryosuke Niwa, Andrew Comminos, Markus Stange, Nic Jansma, Todd Reifsteck, Yoav Weiss</span></p><p class="c3"><span class="c1"></span></p><p class="c6"><span class="c1">Face to Face:</span></p><ul class="c4 lst-kix_6kll866cia1o-0 start"><li class="c0 li-bullet-0"><span class="c1">We need to notify everyone 8 weeks in advance.</span></li><li class="c0 li-bullet-0"><span class="c1">No date nailed down yet.</span></li><li class="c0 li-bullet-0"><span class="c1">Web Games workshop at the end of June</span></li></ul><p class="c3"><span class="c1"></span></p><p class="c6"><span class="c1">Next call dates:</span></p><ul class="c4 lst-kix_mad1fuvvl7ij-0 start"><li class="c0 li-bullet-0"><span class="c1">Tuesday April 23th @ 9:00am PST</span></li></ul><p class="c3"><span class="c1"></span></p><p class="c6"><span><b>Largest Contentful Paint</b>: </span><span class="c7"><a class="c8" href="https://www.google.com/url?q=https://docs.google.com/presentation/d/1oEqw3AZwOjHUake1-MnYrUm4Zti64LRFbBHin16xtSs/edit%23slide%3Did.p&amp;sa=D&amp;source=editors&amp;ust=1613235811700000&amp;usg=AOvVaw2I2vgjai0WkNQRdnhZ4nVE">slides</a></span><span class="c1">&nbsp;(Nicolás)</span></p><ul class="c4 lst-kix_3uemr9tmymi3-0 start"><li class="c0 li-bullet-0"><span class="c1">Improves on FCP</span></li><li class="c0 li-bullet-0"><span class="c1">Looks at the largest text or image.</span></li><li class="c0 li-bullet-0"><span class="c1">Stop looking at input or page unload.</span></li><li class="c0 li-bullet-0"><span class="c1">Heuristics:</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">Ignore removed elements.</span></li><li class="c2 li-bullet-0"><span class="c1">Ignore background images attached to the body.</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1">Mobile:</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">Most mobile pages have at least one large image.</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1">Desktop:</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">May have more page with large text elements.</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: why is this important?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: We have had lots of feedback that FCP isn’t sufficient. Element timing is strictly better than LCP, but not everyone will manually annotate for element timing.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: It seems like this is just heuristics. If developers don’t take the time to annotate their websites for ET, why would they care about this?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: This isn’t just a bunch of heuristics, we’re trying to find the largest element, under the assumption that it is meaningful for the user. There are heusristics related to size of text elements, meaningfulness of BG images, but eventually, we want to use size as a proxy for importance.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Todd</b>: I think the question was “are people asking for this?”</span></li><li class="c0 li-bullet-0"><span class="c1">Ryosuke:</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">Do people want this? Will people use this?</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: FCP is widely used and we get a lot of complaints that it’s not enough, so no doubt there’s a need</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: maybe we need to gather additional data to prove this fills that gap.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: </span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">Safari doesn’t even paint until we think the majority of the web page has painted.</span></li><li class="c2 li-bullet-0"><span class="c1">First contentful paint should be equivalent to largest contentful paint.</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: Is that also true for splash screens?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: won’t that be counted?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: That’s why we ignore removed elements</span></li><li class="c0 li-bullet-0"><span><b>Tim</b>: maybe we should grab some filmstrips from Safari, and eyeball what this metric would do there?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: What Safari aims to do is avoid paint, keep the user looking at the previous screen, until we have enough to paint something meaningful. So this metric will be implementation specific with regards to when things are painted. I can see this being useful in Chrome, but not in Safari.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Todd</b>: At MS, lots of things are built in React, with 3-5 phases of rendering, and only hit “useable” at the 4th phase. IIUC, this API intends to cover some of those scenarios as well.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: yeah. Would going over Safari filmstrips be useful?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: It may be useful, but we’ll consider any difference between this metric and FCP as a bug. Safari wants to wait until the main content has painted. </span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: There’s no conclusion if progressive rendering is better than waiting. Otherwise, regarding exceptions around user interaction and scrolling, how much data do we discard?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: we don’t discard, we just report the earlier example.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: How can we avoid bias? You’d be different measurements based on user behavior.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: Hoping that e.g. 90%ile data will be clean, but we can do more research there.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: We can discard those cases based on timing. </span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: what’s the attribution story?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: We expose rects, intrinsic sizes, urls as reported by RT, id when it’s there. Wondering what attribution is required for this to be useful.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: this is different from what Safari does because we can calculate it retroactively, where the browser can’t do that while painting. So I’d expect differences.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: For this to be useful to webdevs, we want a metric that is useful in all browsers. Usecase of wanting to identify when important things have painted makes sense. Suppose you’re writing an editor app, where you first paint a splash screen. The splash screen is a big image. The editor content is empty. What would the metric do?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: The page will not be a single element which is completely white. Ryosuke - IIUC, this metric and FCP will be very close in Safari?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: I think so.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: So Safari will still show this metric very close to Chrome’s implemention of it, it’s only FCP that will be significantly delayed, right?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: you can see it that way.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: There’s certainly developer demand for something like this. What would be alternatives we can take?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Benjamin</b>: What about last contentful paint?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: We don’t want to penalize continuous updates and lazy loading. Motivated engineers can create their own metrics using Element Timing.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: and the goal with this metric is to gather that data for the majority who won’t annotate their elements.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: Ryosuke, any alternatives?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: the idea to measure this has come up multiple times, and we always didn’t find a good algorithm for this. This is just a bunch of heuristics.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tdresser</b>: Element Timing as a primitives will help us reach a different outcome. FMP was a bag of heuristics. We should solve the problem even if the solution is not perfect.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: heuristics may change in the future.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: reasons for heuristics is to exclude some of the images. This is not a black box of heuristics. We want to use the size of the image as a proxy for its relevance. </span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: the correlation between size and importance is a heuristic in itself</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: I’d be uncomfortable if we said that this is a problem we cannot solve. Developers continuously ask for this.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: maybe ET usage can help guide us towards the right solution. This is a lot of guesswork. It will probably not work for many other sites.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Steven</b>: we sell a platform for our customers to create their pages, where ET will not work.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: yeah, but we should give more time for ET to be used. This is making a lot of assumptions regarding the user interaction model. This reminds above-the-fold synthetic metrics. Maybe the future is that people interact more and more early. Input limitation is a problem. So need a metric that captures that interaction as well.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: We saw data saying that this is better than FCP</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Steven</b>: We sell a platform where customers add components, and want to measure it even if they don’t annotate.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Gilles</b>: we still haven’t given developers a chance to experiment and find patterns that work, which can inform a high-level metric design. This is assuming a lot of the user interaction model and how users behave. This metric becomes less useful as people interact earlier. We need to also capture elements that are below the initial viewport.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: can imagine a webapp where users scroll early to the content they care about</span></li><li class="c0 li-bullet-0"><span><b>Ryosuke</b>: did you look at pages already using element timing, and seen how well this matches up with LCP?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Tim</b>: very few websites use ET today, but we should look at that.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: from an analytics provider’s perspective, does this make sense?</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nic</b>: we need something that doesn’t require manual annotation. Generally excited about this, but we’d need to think through the implications of user input stopping the updating of this metric. We’d need to log when interactions occurred as well. But onboard with getting something like this.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Yoav</b>: what I hear from folks is:</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-1 start"><li class="c2 li-bullet-0"><span class="c1">Concern from folks around input and abort bias.</span></li><li class="c2 li-bullet-0"><span class="c1"><b>Heuristics</b>: how comfortable are folks with a heuristic based approach where the intent is declared, but the heuristic calculation itself is UA defined?</span></li></ul><ul class="c4 lst-kix_3uemr9tmymi3-0"><li class="c0 li-bullet-0"><span class="c1"><b>Markus</b>: ideally any heuristics would live in the page, and the page would do the annotation etc. This isn’t feasible though. We’ll need some heuristics in the browser.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Ryosuke</b>: it would be better if the heuristics lived in the analytics provider.</span></li><li class="c0 li-bullet-0"><span class="c1"><b>Nicolás</b>: we could relax the constraints and emit more ETs, so that analytics providers can calculate this retroactively. </span></li></ul><p class="c6"><span class="c1">&lt;out of time&gt;</span></p><p class="c3"><span class="c1"></span></p></div></div><div id="footer"><span>Published by <a target="_blank" title="Learn more about Google Drive" href="https://docs.google.com/">Google Drive</a></span><span class="dash">–</span><a href="https://docs.google.com/u/0/abuse?id=AKkXjowWKn51P_1cD0oLq1PUNwuHr-GKWIyr8pV2jH84L3-JloJkEEcB-WwqY08_KsoHVorCYmLUt4WeRECmKmk:0">Report Abuse</a></div><script type="text/javascript" nonce="">(function(){/*

 Copyright The Closure Library Authors.
 SPDX-License-Identifier: Apache-2.0
*/
var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};function ba(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var ca=ba(this);
function da(a,b){if(b)a:{var c=ca;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}var ea="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},fa;
if("function"==typeof Object.setPrototypeOf)fa=Object.setPrototypeOf;else{var ha;a:{var ia={a:!0},ja={};try{ja.__proto__=ia;ha=ja.a;break a}catch(a){}ha=!1}fa=ha?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var ka=fa;
function h(a,b){a.prototype=ea(b.prototype);a.prototype.constructor=a;if(ka)ka(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.o=b.prototype}da("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});var l=this||self;function la(){}function ma(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}
function na(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}function oa(a,b){function c(){}c.prototype=b.prototype;a.o=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.B=function(d,e,f){for(var g=Array(arguments.length-2),k=2;k<arguments.length;k++)g[k-2]=arguments[k];return b.prototype[e].apply(d,g)}}function pa(a){return a};var qa=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function ra(a,b,c){for(var d in a)b.call(c,a[d],d,a)};var m;function p(a,b){this.i=a===sa&&b||"";this.j=ta}p.prototype.h=!0;p.prototype.g=function(){return this.i};var ta={},sa={};var ua=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]},va=/&/g,wa=/</g,xa=/>/g,ya=/"/g,za=/'/g,Aa=/\x00/g,Ba=/[\x00&<>"']/;function Ca(a,b){return a<b?-1:a>b?1:0};function q(a,b){this.i=b===r?a:""}q.prototype.h=!0;q.prototype.g=function(){return this.i.toString()};q.prototype.toString=function(){return this.i.toString()};function u(a){return a instanceof q&&a.constructor===q?a.i:"type_error:SafeUrl"}
var Da=/^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font\/\w+|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|video\/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i,Ea=/^data:(.*);base64,[a-z0-9+\/]+=*$/i,Fa=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;function Ga(a){if(a instanceof q)return a;a="object"==typeof a&&a.h?a.g():String(a);Fa.test(a)||(a="about:invalid#zClosurez");return new q(a,r)}
var r={},Ha=new q("about:invalid#zClosurez",r);var v;a:{var Ia=l.navigator;if(Ia){var Ja=Ia.userAgent;if(Ja){v=Ja;break a}}v=""}function w(a){return-1!=v.indexOf(a)};function x(a,b,c){this.i=c===Ka?a:""}x.prototype.h=!0;x.prototype.g=function(){return this.i.toString()};x.prototype.toString=function(){return this.i.toString()};var Ka={};function La(a,b,c,d){a=a instanceof q?a:Ga(a);b=b||l;c=c instanceof p?c instanceof p&&c.constructor===p&&c.j===ta?c.i:"type_error:Const":c||"";return void 0!==d?b.open(u(a),c,d,void 0):b.open(u(a),c)};function Ma(a){Ma[" "](a);return a}Ma[" "]=la;function y(a,b,c){return Object.prototype.hasOwnProperty.call(a,b)?a[b]:a[b]=c(b)};var Na=w("Opera"),z=w("Trident")||w("MSIE"),Oa=w("Edge"),Pa=Oa||z,Qa=w("Gecko")&&!(-1!=v.toLowerCase().indexOf("webkit")&&!w("Edge"))&&!(w("Trident")||w("MSIE"))&&!w("Edge"),Ra=-1!=v.toLowerCase().indexOf("webkit")&&!w("Edge"),Sa=w("Macintosh");function Ta(){var a=l.document;return a?a.documentMode:void 0}var Ua;
a:{var Va="",Wa=function(){var a=v;if(Qa)return/rv:([^\);]+)(\)|;)/.exec(a);if(Oa)return/Edge\/([\d\.]+)/.exec(a);if(z)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(Ra)return/WebKit\/(\S+)/.exec(a);if(Na)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Wa&&(Va=Wa?Wa[1]:"");if(z){var Xa=Ta();if(null!=Xa&&Xa>parseFloat(Va)){Ua=String(Xa);break a}}Ua=Va}var Ya=Ua,Za={},$a;if(l.document&&z){var ab=Ta();$a=ab?ab:parseInt(Ya,10)||void 0}else $a=void 0;var bb=$a;function cb(a){return y(a.prototype,"$$generatedClassName",function(){return"Class$obf_"+{valueOf:function(){return++db}}})}var db=1E3;function A(){}A.prototype.u=function(){return this.j||(Object.defineProperties(this,{j:{value:++eb,enumerable:!1}}),this.j)};A.prototype.toString=function(){var a=B(fb(gb(this.constructor)))+"@";var b=(this.u()>>>0).toString(16);return a+B(b)};function D(){}h(D,A);D.prototype.i=function(a){this.h=a;if(a instanceof Object)try{a.A=this}catch(b){}};function hb(a){a.h instanceof Error&&(Error.captureStackTrace?Error.captureStackTrace(a.h):a.h.stack=Error().stack)}D.prototype.toString=function(){var a=fb(gb(this.constructor)),b=this.l;return null==b?a:B(a)+": "+B(b)};function ib(){}h(ib,D);function jb(){}h(jb,ib);var eb=0;function E(){}h(E,jb);E.prototype.i=function(a){jb.prototype.i.call(this,Object.is(this.g,"__noinit__")?a:this.g)};function kb(){}h(kb,E);function lb(a,b){return"string"==typeof a?a.charCodeAt(b):a.g(b)};function B(a){return null==a?"null":a.toString()}function mb(a){return 65536<=a?B(String.fromCharCode((55296+((a-65536|0)>>10&1023)|0)&65535))+B(String.fromCharCode((56320+((a-65536|0)&1023)|0)&65535)):String.fromCharCode(a&65535)}function nb(a,b){var c=b,d=a.length,e;b=lb(a,(e=c,c=c+1|0,e));var f;if(e=55296<=b&&56319>=b&&c<d)a=f=lb(a,c),e=56320<=a&&57343>=a;var g;e?g=65536+((b&1023)<<10)+(f&1023)|0:g=b;return g};function ob(a,b){this.h=a;this.g=b}h(ob,A);function fb(a){var b=cb(a.h);0!=a.g&&(b="L"+B(b)+";");a=a.g;for(var c="",d=0;d<a;d=d+1|0)c=B(c)+"[";return B(c)+B(b)}ob.prototype.toString=function(){return"class "+B(fb(this))};function gb(a){var b=0;return y(a.prototype,"$$class/"+b,function(){return new ob(a,b)})};function pb(a,b){return null==a?a:b?decodeURI(a):decodeURIComponent(a)};var qb=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\S\s]*))?$/;function rb(a){a=qb.exec(a);for(var b=[],c=0;7>=c;c=c+1|0)a.length<=c||null==a[c]?b.push(null):b.push(a[c]);return b}
function sb(a,b){var c=a.indexOf(mb(35));c=0>c?a.length:c;a:{var d=0;for(var e=b.length;0<(d=a.indexOf(b,d))&&d<c;){var f=nb(a,d-1|0);if(38==f||63==f){if((d+e|0)>=a.length)break a;f=nb(a,d+e|0);if(61==f||38==f||35==f)break a}d=d+(e+1)|0}d=-1}if(0>d)return null;e=a.indexOf(mb(38),d);if(0>e||e>c)e=c;d=d+(b.length+1)|0;b=Math.min(a.length,d);a=a.substr(b,Math.min(a.length,Math.max(d,e))-b|0);c=" ";for(b=0;0<=(b=c.indexOf("\\",b));)36==c.charCodeAt(b+1|0)?(d=B(c.substr(0,b|0))+"$",e=b=b+1|0,c=d+B(c.substr(e))):
(d=B(c.substr(0,b|0)),e=b=b+1|0,c=d+B(c.substr(e)));a=a.replace(/\+/g,c);return pb(a,!1)};function F(a,b){this.h=b;for(var c=[],d=!0,e=a.length-1;0<=e;e--){var f=a[e]|0;d&&f==b||(c[e]=f,d=!1)}this.g=c}var tb={};function ub(a){return-128<=a&&128>a?y(tb,a,function(b){return new F([b|0],0>b?-1:0)}):new F([a|0],0>a?-1:0)}function G(a){if(isNaN(a)||!isFinite(a))return H;if(0>a)return I(G(-a));for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=4294967296;return new F(b,0)}var H=ub(0),J=ub(1),vb=ub(16777216);
function K(a){if(-1==a.h)return-K(I(a));for(var b=0,c=1,d=0;d<a.g.length;d++){var e=L(a,d);b+=(0<=e?e:4294967296+e)*c;c*=4294967296}return b}F.prototype.toString=function(a){a=a||10;if(2>a||36<a)throw Error("radix out of range: "+a);if(M(this))return"0";if(-1==this.h)return"-"+I(this).toString(a);for(var b=G(Math.pow(a,6)),c=this,d="";;){var e=wb(c,b).g;c=N(c,O(e,b));var f=((0<c.g.length?c.g[0]:c.h)>>>0).toString(a);c=e;if(M(c))return f+d;for(;6>f.length;)f="0"+f;d=f+d}};
function L(a,b){return 0>b?0:b<a.g.length?a.g[b]:a.h}function M(a){if(0!=a.h)return!1;for(var b=0;b<a.g.length;b++)if(0!=a.g[b])return!1;return!0}function P(a,b){a=N(a,b);return-1==a.h?-1:M(a)?0:1}function I(a){for(var b=a.g.length,c=[],d=0;d<b;d++)c[d]=~a.g[d];return(new F(c,~a.h)).add(J)}F.prototype.abs=function(){return-1==this.h?I(this):this};
F.prototype.add=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0,e=0;e<=b;e++){var f=d+(L(this,e)&65535)+(L(a,e)&65535),g=(f>>>16)+(L(this,e)>>>16)+(L(a,e)>>>16);d=g>>>16;f&=65535;g&=65535;c[e]=g<<16|f}return new F(c,c[c.length-1]&-2147483648?-1:0)};function N(a,b){return a.add(I(b))}
function O(a,b){if(M(a)||M(b))return H;if(-1==a.h)return-1==b.h?O(I(a),I(b)):I(O(I(a),b));if(-1==b.h)return I(O(a,I(b)));if(0>P(a,vb)&&0>P(b,vb))return G(K(a)*K(b));for(var c=a.g.length+b.g.length,d=[],e=0;e<2*c;e++)d[e]=0;for(e=0;e<a.g.length;e++)for(var f=0;f<b.g.length;f++){var g=L(a,e)>>>16,k=L(a,e)&65535,t=L(b,f)>>>16,n=L(b,f)&65535;d[2*e+2*f]+=k*n;Q(d,2*e+2*f);d[2*e+2*f+1]+=g*n;Q(d,2*e+2*f+1);d[2*e+2*f+1]+=k*t;Q(d,2*e+2*f+1);d[2*e+2*f+2]+=g*t;Q(d,2*e+2*f+2)}for(e=0;e<c;e++)d[e]=d[2*e+1]<<16|
d[2*e];for(e=c;e<2*c;e++)d[e]=0;return new F(d,0)}function Q(a,b){for(;(a[b]&65535)!=a[b];)a[b+1]+=a[b]>>>16,a[b]&=65535,b++}function S(a,b){this.g=a;this.h=b}
function wb(a,b){if(M(b))throw Error("division by zero");if(M(a))return new S(H,H);if(-1==a.h)return b=wb(I(a),b),new S(I(b.g),I(b.h));if(-1==b.h)return b=wb(a,I(b)),new S(I(b.g),b.h);if(30<a.g.length){if(-1==a.h||-1==b.h)throw Error("slowDivide_ only works with positive integers.");for(var c=J,d=b;0>=P(d,a);)c=xb(c,1),d=xb(d,1);var e=T(c,1),f=T(d,1);d=T(d,2);for(c=T(c,2);!M(d);){var g=f.add(d);0>=P(g,a)&&(e=e.add(c),f=g);d=T(d,1);c=T(c,1)}b=N(a,O(e,b));return new S(e,b)}for(e=H;0<=P(a,b);){c=Math.max(1,
Math.floor(K(a)/K(b)));d=Math.ceil(Math.log(c)/Math.LN2);d=48>=d?1:Math.pow(2,d-48);f=G(c);for(g=O(f,b);-1==g.h||0<P(g,a);)c-=d,f=G(c),g=O(f,b);M(f)&&(f=J);e=e.add(f);a=N(a,g)}return new S(e,a)}F.prototype.and=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=L(this,d)&L(a,d);return new F(c,this.h&a.h)};F.prototype.or=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=L(this,d)|L(a,d);return new F(c,this.h|a.h)};
F.prototype.xor=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=L(this,d)^L(a,d);return new F(c,this.h^a.h)};function xb(a,b){var c=b>>5;b%=32;for(var d=a.g.length+c+(0<b?1:0),e=[],f=0;f<d;f++)e[f]=0<b?L(a,f-c)<<b|L(a,f-c-1)>>>32-b:L(a,f-c);return new F(e,a.h)}function T(a,b){var c=b>>5;b%=32;for(var d=a.g.length-c,e=[],f=0;f<d;f++)e[f]=0<b?L(a,f+c)>>>b|L(a,f+c+1)<<32-b:L(a,f+c);return new F(e,a.h)};N(xb(J,32),J);N(xb(J,128),J);function yb(a){a&&"function"==typeof a.v&&a.v()};function U(){this.h=this.h;this.g=this.g}U.prototype.h=!1;U.prototype.v=function(){this.h||(this.h=!0,this.j())};U.prototype.j=function(){if(this.g)for(;this.g.length;)this.g.shift()()};var zb=!z||9<=Number(bb),Ab=!z||9<=Number(bb),Bb=z&&!y(Za,"9",function(){for(var a=0,b=ua(String(Ya)).split("."),c=ua("9").split("."),d=Math.max(b.length,c.length),e=0;0==a&&e<d;e++){var f=b[e]||"",g=c[e]||"";do{f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];g=/(\d*)(\D*)(.*)/.exec(g)||["","","",""];if(0==f[0].length&&0==g[0].length)break;a=Ca(0==f[1].length?0:parseInt(f[1],10),0==g[1].length?0:parseInt(g[1],10))||Ca(0==f[2].length,0==g[2].length)||Ca(f[2],g[2]);f=f[3];g=g[3]}while(0==a)}return 0<=a}),
Cb=function(){if(!l.addEventListener||!Object.defineProperty)return!1;var a=!1,b=Object.defineProperty({},"passive",{get:function(){a=!0}});try{l.addEventListener("test",la,b),l.removeEventListener("test",la,b)}catch(c){}return a}();function Db(a,b){this.type=a;this.g=this.target=b;this.defaultPrevented=!1}Db.prototype.h=function(){this.defaultPrevented=!0};function V(a,b){Db.call(this,a?a.type:"");this.relatedTarget=this.g=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key="";this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType="";this.i=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.g=b;if(b=a.relatedTarget){if(Qa){a:{try{Ma(b.nodeName);var e=!0;break a}catch(f){}e=
!1}e||(b=null)}}else"mouseover"==c?b=a.fromElement:"mouseout"==c&&(b=a.toElement);this.relatedTarget=b;d?(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.key=a.key||"";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=
a.shiftKey;this.metaKey=a.metaKey;this.pointerId=a.pointerId||0;this.pointerType="string"===typeof a.pointerType?a.pointerType:Eb[a.pointerType]||"";this.state=a.state;this.i=a;a.defaultPrevented&&V.o.h.call(this)}}oa(V,Db);var Fb=[1,4,2],Eb={2:"touch",3:"pen",4:"mouse"};V.prototype.h=function(){V.o.h.call(this);var a=this.i;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,Bb)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};var Gb="closure_listenable_"+(1E6*Math.random()|0);var Hb=0;function Ib(a,b,c,d,e){this.listener=a;this.g=null;this.src=b;this.type=c;this.capture=!!d;this.h=e;this.key=++Hb;this.m=this.s=!1}function Jb(a){a.m=!0;a.listener=null;a.g=null;a.src=null;a.h=null};function Kb(a){this.src=a;this.g={};this.h=0}Kb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.g[f];a||(a=this.g[f]=[],this.h++);var g;a:{for(g=0;g<a.length;++g){var k=a[g];if(!k.m&&k.listener==b&&k.capture==!!d&&k.h==e)break a}g=-1}-1<g?(b=a[g],c||(b.s=!1)):(b=new Ib(b,this.src,f,!!d,e),b.s=c,a.push(b));return b};function Lb(a,b){var c=b.type;if(c in a.g){var d=a.g[c],e=qa(d,b),f;(f=0<=e)&&Array.prototype.splice.call(d,e,1);f&&(Jb(b),0==a.g[c].length&&(delete a.g[c],a.h--))}};var Mb="closure_lm_"+(1E6*Math.random()|0),Nb={},Ob=0;function Pb(a,b,c,d,e){if(d&&d.once)return Qb(a,b,c,d,e);if(Array.isArray(b)){for(var f=0;f<b.length;f++)Pb(a,b[f],c,d,e);return null}c=Rb(c);return a&&a[Gb]?a.g.add(String(b),c,!1,ma(d)?!!d.capture:!!d,e):Sb(a,b,c,!1,d,e)}
function Sb(a,b,c,d,e,f){if(!b)throw Error("Invalid event type");var g=ma(e)?!!e.capture:!!e,k=Tb(a);k||(a[Mb]=k=new Kb(a));c=k.add(b,c,d,g,f);if(c.g)return c;d=Ub();c.g=d;d.src=a;d.listener=c;if(a.addEventListener)Cb||(e=g),void 0===e&&(e=!1),a.addEventListener(b.toString(),d,e);else if(a.attachEvent)a.attachEvent(Vb(b.toString()),d);else if(a.addListener&&a.removeListener)a.addListener(d);else throw Error("addEventListener and attachEvent are unavailable.");Ob++;return c}
function Ub(){var a=Wb,b=Ab?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b}function Qb(a,b,c,d,e){if(Array.isArray(b)){for(var f=0;f<b.length;f++)Qb(a,b[f],c,d,e);return null}c=Rb(c);return a&&a[Gb]?a.g.add(String(b),c,!0,ma(d)?!!d.capture:!!d,e):Sb(a,b,c,!0,d,e)}
function Xb(a){if("number"!==typeof a&&a&&!a.m){var b=a.src;if(b&&b[Gb])Lb(b.g,a);else{var c=a.type,d=a.g;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent?b.detachEvent(Vb(c),d):b.addListener&&b.removeListener&&b.removeListener(d);Ob--;(c=Tb(b))?(Lb(c,a),0==c.h&&(c.src=null,b[Mb]=null)):Jb(a)}}}function Vb(a){return a in Nb?Nb[a]:Nb[a]="on"+a}
function Yb(a,b,c,d){var e=!0;if(a=Tb(a))if(b=a.g[b.toString()])for(b=b.concat(),a=0;a<b.length;a++){var f=b[a];f&&f.capture==c&&!f.m&&(f=Zb(f,d),e=e&&!1!==f)}return e}function Zb(a,b){var c=a.listener,d=a.h||a.src;a.s&&Xb(a);return c.call(d,b)}
function Wb(a,b){if(a.m)return!0;if(!Ab){if(!b)a:{b=["window","event"];for(var c=l,d=0;d<b.length;d++)if(c=c[b[d]],null==c){b=null;break a}b=c}d=b;b=new V(d,this);c=!0;if(!(0>d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.g;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.g=d[e];var f=Yb(d[e],a,!0,b);c=c&&f}for(e=0;e<d.length;e++)b.g=d[e],f=Yb(d[e],a,!1,b),c=c&&f}return c}return Zb(a,
new V(b,this))}function Tb(a){a=a[Mb];return a instanceof Kb?a:null}var $b="__closure_events_fn_"+(1E9*Math.random()>>>0);function Rb(a){if("function"===typeof a)return a;a[$b]||(a[$b]=function(b){return a.handleEvent(b)});return a[$b]};function W(a){U.call(this);this.l=a;this.i={}}oa(W,U);var ac=[];function bc(a){ra(a.i,function(b,c){this.i.hasOwnProperty(c)&&Xb(b)},a);a.i={}}W.prototype.j=function(){W.o.j.call(this);bc(this)};W.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented");};function cc(a){U.call(this);this.i=a||document.body;this.l=new W(this);a=na(yb,this.l);this.h?a():(this.g||(this.g=[]),this.g.push(a));a=this.l;var b=this.i,c=this.u,d="click";Array.isArray(d)||(d&&(ac[0]=d.toString()),d=ac);for(var e=0;e<d.length;e++){var f=Pb(b,d[e],c||a.handleEvent,!1,a.l||a);if(!f)break;a.i[f.key]=f}}h(cc,U);
cc.prototype.u=function(a){if(!(!(zb?0==a.i.button:"click"==a.type||a.i.button&Fb[0])||Sa&&a.ctrlKey||a.defaultPrevented))for(var b=a.target;b&&b!=this.i;){if(b.tagName&&"a"==b.tagName.toLowerCase()){var c=b.getAttribute("href")||b.getAttributeNS("http://www.w3.org/1999/xlink","href"),d=c;try{var e=rb(c)[3];var f;if(f="www.google.com"===pb(e,!0)){var g=rb(c)[5];f="/url"===pb(g,!0)}if(f){var k=sb(c,"q");d=k?k:sb(c,"url")}}catch(C){a:{var t=C;if(null!=t){var n=t.A;if(null!=n){C=n;break a}}if(t instanceof
TypeError){var R=n=new kb;R.l=B(t);hb(R);n.g="__noinit__";n.g=t;n.i(new TypeError(n));t=n}else R=n=new E,R.l=B(t),hb(R),n.g="__noinit__",n.g=t,n.i(Error(n)),t=n;C=t}if(!(C instanceof ib))throw C.h;}d=null!=d?d:"";if(c!=d){e=void 0;b={target:"_blank",noreferrer:!0};c=window;d instanceof q?f=d:(f="undefined"!=typeof d.href?d.href:String(d),f instanceof q||(f="object"==typeof f&&f.h?f.g():String(f),Fa.test(f)?f=new q(f,r):(f=String(f),f=f.replace(/(%0A|%0D)/g,""),f=(g=f.match(Ea))&&Da.test(g[1])?new q(f,
r):null)),f=f||Ha);d=b.target||d.target;g=[];for(e in b)switch(e){case "width":case "height":case "top":case "left":g.push(e+"="+b[e]);break;case "target":case "noopener":case "noreferrer":break;default:g.push(e+"="+(b[e]?1:0))}e=g.join(",");if((w("iPhone")&&!w("iPod")&&!w("iPad")||w("iPad")||w("iPod"))&&c.navigator&&c.navigator.standalone&&d&&"_self"!=d)e="A",g=document,e=String(e),"application/xhtml+xml"===g.contentType&&(e=e.toLowerCase()),g=e=g.createElement(e),f=f instanceof q?f:Ga(f),g.href=
u(f),e.setAttribute("target",d),b.noreferrer&&e.setAttribute("rel","noreferrer"),b=document.createEvent("MouseEvent"),b.initMouseEvent("click",!0,!0,c,1),e.dispatchEvent(b);else if(b.noreferrer){if(c=La("",c,d,e),b=u(f),c){Pa&&-1!=b.indexOf(";")&&(b="'"+b.replace(/'/g,"%27")+"'");c.opener=null;Ba.test(b)&&(-1!=b.indexOf("&")&&(b=b.replace(va,"&amp;")),-1!=b.indexOf("<")&&(b=b.replace(wa,"&lt;")),-1!=b.indexOf(">")&&(b=b.replace(xa,"&gt;")),-1!=b.indexOf('"')&&(b=b.replace(ya,"&quot;")),-1!=b.indexOf("'")&&
(b=b.replace(za,"&#39;")),-1!=b.indexOf("\x00")&&(b=b.replace(Aa,"&#0;")));b='<meta name="referrer" content="no-referrer"><meta http-equiv="refresh" content="0; url='+b+'">';if(void 0===m)if(d=null,(e=l.trustedTypes)&&e.createPolicy){try{d=e.createPolicy("goog#html",{createHTML:pa,createScript:pa,createScriptURL:pa})}catch(C){l.console&&l.console.error(C.message)}m=d}else m=d;b=(d=m)?d.createHTML(b):b;b=new x(b,null,Ka);(c=c.document)&&c.write&&(c.write(b instanceof x&&b.constructor===x?b.i:"type_error:SafeHtml"),
c.close())}}else(c=La(f,c,d,e))&&b.noopener&&(c.opener=null);a.h();break}}b=b.parentNode}};function dc(a){new cc(a)}var X=["DOCS_installLinkReferrerSanitizer"],Y=l;X[0]in Y||"undefined"==typeof Y.execScript||Y.execScript("var "+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===dc?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=dc;}).call(this);
</script><script type="text/javascript" nonce="">DOCS_installLinkReferrerSanitizer();</script></body></html>